package proxy;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

public class Test {
    public static void main(String[] args) {
        Student stu = new Student();
        /*stu.eat("米饭");
        stu.study();*/


        /*
            要求：
            类加载器：和被代理对象使用相同的类加载器
            接口类型Class数组：和被代理对象使用相同接口
            代理规则：
        */
        Studentinterface Proxystu = (Studentinterface) Proxy.newProxyInstance(stu.getClass().getClassLoader(), stu.getClass().getInterfaces(), new InvocationHandler() {
            @Override
            public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
                if (method.getName().equals("study")){
                    System.out.println("彪哥在日本学习");
                    return null;
                }else {
                    return method.invoke(stu,args);
                }
            }
        });
        Proxystu.eat("米饭");
        Proxystu.study();
    }
}
